package com.tan.controller;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.tan.domain.Tag;
import com.tan.domain.response.Result;
import com.tan.domain.response.StatusCode;
import com.tan.domain.vo.TagVO;
import com.tan.service.TagService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.*;
import java.util.stream.Collectors;

/**
 * @description:
 * @author: longshifu
 * @time: 2022/7/20 12:33
 */
@RestController
@Slf4j
public class TagShowController {
    @Autowired
    TagService tagService;

    @GetMapping("/getTagList")
    public Result getTagList() {
//        Page<Tag> page = new Page<Tag>(0, 10);
//        page = tagService.page(page);
//        List<Tag> tags = page.getRecords();
//        return new Result(true, StatusCode.OK, "获取博客标签成功", tags);

        List<TagVO> tagVOS = new LinkedList<>();
        List<Tag> tags = tagService.list();
        for (Tag tag : tags) {
            TagVO tagVO = new TagVO();
            BeanUtils.copyProperties(tag, tagVO);
            tagVOS.add(tagVO);
        }
        System.out.println(tagVOS);
        for (TagVO t : tagVOS) {
            QueryWrapper<Tag> queryWrapper = new QueryWrapper<>();
            queryWrapper.eq("name", t.getName());
            List<Tag> tagList = tagService.list(queryWrapper);

            int count = tagService.count(queryWrapper);
            t.setBlogCount(count);
        }
        tagVOS=tagVOS.stream().collect(
                Collectors.collectingAndThen(Collectors.toCollection(()->new TreeSet<>(Comparator.comparing(TagVO::getName))), ArrayList::new));
        //System.out.println(tagVOS);
        return new Result(true, StatusCode.OK, "获取所有博客标签成功", tagVOS);
    }


}
